package Basic;

public class demo_3_1{
    public static void main(String[] args) {
        //银行的钱怎么表示？
        float m= 0.1F;
        double dm =0.1;
        System.out.println(m==dm);  //输出的是false
        System.out.println(m);
        System.out.println(dm);
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        float t=1231231234F;
        float d=t+1;
        System.out.println(t==d); //输出的是true
        /*
        总结：用float进行比较是不行的！
        float表示的是：有限 离散 舍入误差 大约的数字 接近但不等于
        最好避免用浮点数进行比较
        银行业务用 BigDecimal 类 来表示
        */
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        char f='周';
        char g='z';
        System.out.println(f);
        System.out.println((int)f); //强制类型转换
        System.out.println(g);
        System.out.println((int)g); //强制类型转换
        System.out.println(f/g);
        /*
        总结：char类型本质还是数字，通过类型转换还是能被用来计算的。
        编码用的Unicode 两个字节 65535 2^16 EXCEL
            U0000 UFFFF
         */
        char h='\u0061';    //unicode 转义字符编码
        System.out.println(h); //输出的是字符a
        System.out.println('\u0062'); //输出的字符b
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        //从内存对象分析
        String sa= new String("hello");
        String sb= new String("hello");
        String sc="hello";
        String sd="hello";
        System.out.println(sa==sb); //内存地址不同，即使内容一样，也不相等
        System.out.println(sc==sd); //内存和内容都相等，存储在一个位置
        System.out.println(sa==sc);//内存地址不同，即使内容一样，也不相等
        System.out.println(sb==sc);//内存地址不同，即使内容一样，也不相等
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
        // boolean布尔类型扩展
        boolean flag =true;
        if (flag==true){
            //code……新手
        };
        if(flag){
            //code……代码更简洁，老手
        }
    }
}